// duck typing :描述事物的外部行为而非内部结构,像鸭子走路，像鸭子叫(长得像鸭子)，那么就是鸭子,实现是隐式的

package main

import (
	"fmt"
	"go-project/interfaces/mock"
)

// 接口变量
// 接口变量里面有什么:实现者的类型;实现者的指针
// interface{} 支持任何类型
// 使用接口组合（接口的使用者来做）

type Retriever interface {
	Get(url string) string
}

func download(r Retriever) string {
	return r.Get("www.mooc.com")

}

func main() {
	var r Retriever
	r = mock.Retriever{Contents: "this is retriever"}
	fmt.Println(download(r))
}
